/*
*********************************************************************************************************
*
*	模块名称 : 应用程序参数模块
*	文件名称 : param.h
*	版    本 : V1.0
*	说    明 : 头文件
*
*	Copyright (C), 2016-2026, HDM 
*
*********************************************************************************************************
*/

#ifndef __PARAM_H
#define __PARAM_H


#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>

#define PARAM_SAVE_TO_FLASH		/* 参数存储到CPU内部Flash */

#ifdef PARAM_SAVE_TO_FLASH
#if 0  /* 大容量*/
/* 存储参数配置信息 */
#define PARAM_START_ADDR		((int32_t)0x807f800)    /* FLASH区域的最后2K */
/* 存储参数配置信息的备份区 */
#define PARAM_BACKUP_START_ADDR ((uint32_t)0x807f000)   /* FLASH区域的最后倒数第二个2K */
#else /* 中小容量芯片 */
/* 存储参数配置信息 */
#define PARAM_START_ADDR		((uint32_t)0x803f800)   /* FLASH区域的最后2K */
/* 存储参数配置信息的备份区 */
#define PARAM_BACKUP_START_ADDR ((uint32_t)0x803f000)   /* FLASH区域的最后倒数第二个2K */
#endif

#endif

#define  FLASH_DATA_BEGIN_FLAG      0x55555555          //FLASH 数据区起始标志
#define  FLASH_DATA_END_FLAG        0xaaaaaaaa          //FLASH 数据区结束标志

/* 全局参数(尽量是4字节的倍数,能适应按半字和按字写入FLASH) */
typedef struct struct_param {
    uint32_t Version;               /* 参数区版本控制（可用于程序升级时，决定是否对参数区进行升级） */
}PARAM_T;

extern PARAM_T g_tParam;

uint8_t LoadParam(void);
uint8_t SaveParam(void);
uint8_t SetDefaultParam(void);

#ifdef __cplusplus
}
#endif

#endif /* __PARAM_H */
